[INFO] cloning repository https://github.com/aidantrabs/RTracer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/aidantrabs/RTracer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faidantrabs%2FRTracer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faidantrabs%2FRTracer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0de12d22c467574c1c3fcd5b243d870f04e27e92
[INFO] checking aidantrabs/RTracer against master#e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682 for beta-170-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faidantrabs%2FRTracer" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/aidantrabs/RTracer on toolchain e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/aidantrabs/RTracer
[INFO] finished tweaking git repo https://github.com/aidantrabs/RTracer
[INFO] tweaked toml for git repo https://github.com/aidantrabs/RTracer written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/aidantrabs/RTracer already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:19e73879b68f455e41552ea35293514db52ea292d993f571636dbffedb77a1ee" "/opt/rustwide/cargo-home/bin/cargo" "+e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 03bef0c041e55c601e8ccf1cc748fd88c5c6d7808a69fd270c4a431a750cf1a6
[INFO] running `Command { std: "docker" "start" "-a" "03bef0c041e55c601e8ccf1cc748fd88c5c6d7808a69fd270c4a431a750cf1a6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "03bef0c041e55c601e8ccf1cc748fd88c5c6d7808a69fd270c4a431a750cf1a6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "03bef0c041e55c601e8ccf1cc748fd88c5c6d7808a69fd270c4a431a750cf1a6", kill_on_drop: false }`
[INFO] [stdout] 03bef0c041e55c601e8ccf1cc748fd88c5c6d7808a69fd270c4a431a750cf1a6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:19e73879b68f455e41552ea35293514db52ea292d993f571636dbffedb77a1ee" "/opt/rustwide/cargo-home/bin/cargo" "+e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] dab67a512d4a0456c19f073260c92a3cfc5f49fb891f9130dc71dddca4996213
[INFO] running `Command { std: "docker" "start" "-a" "dab67a512d4a0456c19f073260c92a3cfc5f49fb891f9130dc71dddca4996213", kill_on_drop: false }`
[INFO] [stderr]     Checking raytracing v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: expected expression, found `,`
[INFO] [stdout]   --> src/main.rs:63:39
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let camera = Camera::new(&origin, , , FOCAL_LENGTH);
[INFO] [stdout]    |                                       ^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found `,`
[INFO] [stdout]   --> src/main.rs:63:39
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let camera = Camera::new(&origin, , , FOCAL_LENGTH);
[INFO] [stdout]    |                                       ^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rand`
[INFO] [stdout]  --> src/vec3.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use rand::Rng;
[INFO] [stdout]   |     ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rand`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use rand::*;
[INFO] [stdout]    |     ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rand`
[INFO] [stdout]  --> src/vec3.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use rand::Rng;
[INFO] [stdout]   |     ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rand`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use rand::*;
[INFO] [stdout]    |     ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Ray` in this scope
[INFO] [stdout]   --> src/camera.rs:50:47
[INFO] [stdout]    |
[INFO] [stdout] 50 |      pub fn get_ray(&self, s: f32, t: f32) -> Ray {
[INFO] [stdout]    |                                               ^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout] 1  + use crate::Ray;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Ray` in this scope
[INFO] [stdout]   --> src/camera.rs:50:47
[INFO] [stdout]    |
[INFO] [stdout] 50 |      pub fn get_ray(&self, s: f32, t: f32) -> Ray {
[INFO] [stdout]    |                                               ^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout] 1  + use crate::Ray;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0422]: cannot find struct, variant or union type `Ray` in this scope
[INFO] [stdout]   --> src/camera.rs:54:11
[INFO] [stdout]    |
[INFO] [stdout] 54 |           Ray {
[INFO] [stdout]    |           ^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout] 1  + use crate::Ray;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0422]: cannot find struct, variant or union type `Ray` in this scope
[INFO] [stdout]   --> src/camera.rs:54:11
[INFO] [stdout]    |
[INFO] [stdout] 54 |           Ray {
[INFO] [stdout]    |           ^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout] 1  + use crate::Ray;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `cam` in this scope
[INFO] [stdout]   --> src/main.rs:73:25
[INFO] [stdout]    |
[INFO] [stdout] 73 |                 let r = cam.get_ray(u, v);
[INFO] [stdout]    |                         ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `cam` in this scope
[INFO] [stdout]   --> src/main.rs:73:25
[INFO] [stdout]    |
[INFO] [stdout] 73 |                 let r = cam.get_ray(u, v);
[INFO] [stdout]    |                         ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::camera::*`
[INFO] [stdout]  --> src/main.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::camera::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::camera::*`
[INFO] [stdout]  --> src/main.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::camera::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0050]: method `hit` has 4 parameters but the declaration in trait `hittable::Hittable::hit` has 5
[INFO] [stdout]   --> src/hittable_list.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected 5 parameters, found 4
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/hittable.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32, rec: &mut HitRecord) -> bool;
[INFO] [stdout]    |            ----------------------------------------------------------- trait requires 5 parameters
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0050]: method `hit` has 4 parameters but the declaration in trait `hittable::Hittable::hit` has 5
[INFO] [stdout]   --> src/hittable_list.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected 5 parameters, found 4
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/hittable.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32, rec: &mut HitRecord) -> bool;
[INFO] [stdout]    |            ----------------------------------------------------------- trait requires 5 parameters
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `unit_vector` found for struct `vec3::Vec3` in the current scope
[INFO] [stdout]   --> src/camera.rs:28:39
[INFO] [stdout]    |
[INFO] [stdout] 28 |           let w = (lookfrom - lookat).unit_vector();
[INFO] [stdout]    |                   --------------------^^^^^^^^^^^--
[INFO] [stdout]    |                   |                   |
[INFO] [stdout]    |                   |                   this is an associated function, not a method
[INFO] [stdout]    |                   help: use associated function syntax instead: `vec3::Vec3::unit_vector()`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/vec3.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | pub struct Vec3 {
[INFO] [stdout]    | --------------- method `unit_vector` not found for this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: found the following associated functions; to be used as methods, functions must have a `self` parameter
[INFO] [stdout] note: the candidate is defined in an impl for the type `vec3::Vec3`
[INFO] [stdout]   --> src/vec3.rs:50:6
[INFO] [stdout]    |
[INFO] [stdout] 50 |      pub fn unit_vector(u: &Vec3) -> Vec3 {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `unit_vector` found for struct `vec3::Vec3` in the current scope
[INFO] [stdout]   --> src/camera.rs:28:39
[INFO] [stdout]    |
[INFO] [stdout] 28 |           let w = (lookfrom - lookat).unit_vector();
[INFO] [stdout]    |                   --------------------^^^^^^^^^^^--
[INFO] [stdout]    |                   |                   |
[INFO] [stdout]    |                   |                   this is an associated function, not a method
[INFO] [stdout]    |                   help: use associated function syntax instead: `vec3::Vec3::unit_vector()`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/vec3.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | pub struct Vec3 {
[INFO] [stdout]    | --------------- method `unit_vector` not found for this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: found the following associated functions; to be used as methods, functions must have a `self` parameter
[INFO] [stdout] note: the candidate is defined in an impl for the type `vec3::Vec3`
[INFO] [stdout]   --> src/vec3.rs:50:6
[INFO] [stdout]    |
[INFO] [stdout] 50 |      pub fn unit_vector(u: &Vec3) -> Vec3 {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `cross` found for struct `vec3::Vec3` in the current scope
[INFO] [stdout]   --> src/camera.rs:29:23
[INFO] [stdout]    |
[INFO] [stdout] 29 |           let u = vup.cross(w).unit_vector();
[INFO] [stdout]    |                   ----^^^^^---
[INFO] [stdout]    |                   |   |
[INFO] [stdout]    |                   |   this is an associated function, not a method
[INFO] [stdout]    |                   help: use associated function syntax instead: `vec3::Vec3::cross(w)`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/vec3.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | pub struct Vec3 {
[INFO] [stdout]    | --------------- method `cross` not found for this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: found the following associated functions; to be used as methods, functions must have a `self` parameter
[INFO] [stdout] note: the candidate is defined in an impl for the type `vec3::Vec3`
[INFO] [stdout]   --> src/vec3.rs:32:6
[INFO] [stdout]    |
[INFO] [stdout] 32 |      pub fn cross(u: &Vec3, v: &Vec3) -> Vec3 {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `cross` found for struct `vec3::Vec3` in the current scope
[INFO] [stdout]   --> src/camera.rs:29:23
[INFO] [stdout]    |
[INFO] [stdout] 29 |           let u = vup.cross(w).unit_vector();
[INFO] [stdout]    |                   ----^^^^^---
[INFO] [stdout]    |                   |   |
[INFO] [stdout]    |                   |   this is an associated function, not a method
[INFO] [stdout]    |                   help: use associated function syntax instead: `vec3::Vec3::cross(w)`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/vec3.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | pub struct Vec3 {
[INFO] [stdout]    | --------------- method `cross` not found for this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: found the following associated functions; to be used as methods, functions must have a `self` parameter
[INFO] [stdout] note: the candidate is defined in an impl for the type `vec3::Vec3`
[INFO] [stdout]   --> src/vec3.rs:32:6
[INFO] [stdout]    |
[INFO] [stdout] 32 |      pub fn cross(u: &Vec3, v: &Vec3) -> Vec3 {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/camera.rs:35:44
[INFO] [stdout]    |
[INFO] [stdout] 35 |           let lower_left_corner = origin - horizontal / 2.0 - vertical / 2.0 - focus_dist * w;
[INFO] [stdout]    |                                   ------   ^^^^^^^^^^^^^^^^ expected `Vec3`, found `f32`
[INFO] [stdout]    |                                   |
[INFO] [stdout]    |                                   expected because this is `vec3::Vec3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/camera.rs:35:44
[INFO] [stdout]    |
[INFO] [stdout] 35 |           let lower_left_corner = origin - horizontal / 2.0 - vertical / 2.0 - focus_dist * w;
[INFO] [stdout]    |                                   ------   ^^^^^^^^^^^^^^^^ expected `Vec3`, found `f32`
[INFO] [stdout]    |                                   |
[INFO] [stdout]    |                                   expected because this is `vec3::Vec3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/camera.rs:35:63
[INFO] [stdout]    |
[INFO] [stdout] 35 |           let lower_left_corner = origin - horizontal / 2.0 - vertical / 2.0 - focus_dist * w;
[INFO] [stdout]    |                                   -------------------------   ^^^^^^^^^^^^^^ expected `Vec3`, found `f32`
[INFO] [stdout]    |                                   |
[INFO] [stdout]    |                                   expected because this is `vec3::Vec3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/camera.rs:35:63
[INFO] [stdout]    |
[INFO] [stdout] 35 |           let lower_left_corner = origin - horizontal / 2.0 - vertical / 2.0 - focus_dist * w;
[INFO] [stdout]    |                                   -------------------------   ^^^^^^^^^^^^^^ expected `Vec3`, found `f32`
[INFO] [stdout]    |                                   |
[INFO] [stdout]    |                                   expected because this is `vec3::Vec3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/camera.rs:35:80
[INFO] [stdout]    |
[INFO] [stdout] 35 |           let lower_left_corner = origin - horizontal / 2.0 - vertical / 2.0 - focus_dist * w;
[INFO] [stdout]    |                                   ------------------------------------------   ^^^^^^^^^^^^^^ expected `Vec3`, found `f32`
[INFO] [stdout]    |                                   |
[INFO] [stdout]    |                                   expected because this is `vec3::Vec3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/camera.rs:35:80
[INFO] [stdout]    |
[INFO] [stdout] 35 |           let lower_left_corner = origin - horizontal / 2.0 - vertical / 2.0 - focus_dist * w;
[INFO] [stdout]    |                                   ------------------------------------------   ^^^^^^^^^^^^^^ expected `Vec3`, found `f32`
[INFO] [stdout]    |                                   |
[INFO] [stdout]    |                                   expected because this is `vec3::Vec3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/camera.rs:41:16
[INFO] [stdout]    |
[INFO] [stdout] 41 |                horizontal,
[INFO] [stdout]    |                ^^^^^^^^^^ expected `Vec3`, found `f32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/camera.rs:41:16
[INFO] [stdout]    |
[INFO] [stdout] 41 |                horizontal,
[INFO] [stdout]    |                ^^^^^^^^^^ expected `Vec3`, found `f32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/camera.rs:42:16
[INFO] [stdout]    |
[INFO] [stdout] 42 |                vertical,
[INFO] [stdout]    |                ^^^^^^^^ expected `Vec3`, found `f32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/camera.rs:42:16
[INFO] [stdout]    |
[INFO] [stdout] 42 |                vertical,
[INFO] [stdout]    |                ^^^^^^^^ expected `Vec3`, found `f32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `squared_length` found for struct `vec3::Vec3` in the current scope
[INFO] [stdout]   --> src/camera.rs:64:14
[INFO] [stdout]    |
[INFO] [stdout] 64 |      while p.squared_length() >= 1.0 {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ method not found in `vec3::Vec3`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/vec3.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | pub struct Vec3 {
[INFO] [stdout]    | --------------- method `squared_length` not found for this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `rand`
[INFO] [stdout]   --> src/camera.rs:65:31
[INFO] [stdout]    |
[INFO] [stdout] 65 |           p = 2.0 * Vec3::new(rand::random::<f32>(), rand::random::<f32>(), 0.0) - Vec3::new(1.0, 1.0, 0.0);
[INFO] [stdout]    |                               ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `rand`
[INFO] [stdout]   --> src/camera.rs:65:54
[INFO] [stdout]    |
[INFO] [stdout] 65 |           p = 2.0 * Vec3::new(rand::random::<f32>(), rand::random::<f32>(), 0.0) - Vec3::new(1.0, 1.0, 0.0);
[INFO] [stdout]    |                                                      ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `squared_length` found for struct `vec3::Vec3` in the current scope
[INFO] [stdout]   --> src/camera.rs:64:14
[INFO] [stdout]    |
[INFO] [stdout] 64 |      while p.squared_length() >= 1.0 {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ method not found in `vec3::Vec3`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/vec3.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | pub struct Vec3 {
[INFO] [stdout]    | --------------- method `squared_length` not found for this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `rand`
[INFO] [stdout]   --> src/camera.rs:65:31
[INFO] [stdout]    |
[INFO] [stdout] 65 |           p = 2.0 * Vec3::new(rand::random::<f32>(), rand::random::<f32>(), 0.0) - Vec3::new(1.0, 1.0, 0.0);
[INFO] [stdout]    |                               ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `rand`
[INFO] [stdout]   --> src/camera.rs:65:54
[INFO] [stdout]    |
[INFO] [stdout] 65 |           p = 2.0 * Vec3::new(rand::random::<f32>(), rand::random::<f32>(), 0.0) - Vec3::new(1.0, 1.0, 0.0);
[INFO] [stdout]    |                                                      ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `clamp` in this scope
[INFO] [stdout]   --> src/color.rs:33:29
[INFO] [stdout]    |
[INFO] [stdout] 33 |           let ir = (256.0 * clamp(r, 0.0, 0.999)) as i32;
[INFO] [stdout]    |                             ^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: use the `.` operator to call the method `clamp` on `f32`
[INFO] [stdout]    |
[INFO] [stdout] 33 -           let ir = (256.0 * clamp(r, 0.0, 0.999)) as i32;
[INFO] [stdout] 33 +           let ir = (256.0 * r.clamp(0.0, 0.999)) as i32;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `clamp` in this scope
[INFO] [stdout]   --> src/color.rs:33:29
[INFO] [stdout]    |
[INFO] [stdout] 33 |           let ir = (256.0 * clamp(r, 0.0, 0.999)) as i32;
[INFO] [stdout]    |                             ^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: use the `.` operator to call the method `clamp` on `f32`
[INFO] [stdout]    |
[INFO] [stdout] 33 -           let ir = (256.0 * clamp(r, 0.0, 0.999)) as i32;
[INFO] [stdout] 33 +           let ir = (256.0 * r.clamp(0.0, 0.999)) as i32;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `clamp` in this scope
[INFO] [stdout]   --> src/color.rs:34:29
[INFO] [stdout]    |
[INFO] [stdout] 34 |           let ig = (256.0 * clamp(g, 0.0, 0.999)) as i32;
[INFO] [stdout]    |                             ^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: use the `.` operator to call the method `clamp` on `f32`
[INFO] [stdout]    |
[INFO] [stdout] 34 -           let ig = (256.0 * clamp(g, 0.0, 0.999)) as i32;
[INFO] [stdout] 34 +           let ig = (256.0 * g.clamp(0.0, 0.999)) as i32;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `clamp` in this scope
[INFO] [stdout]   --> src/color.rs:34:29
[INFO] [stdout]    |
[INFO] [stdout] 34 |           let ig = (256.0 * clamp(g, 0.0, 0.999)) as i32;
[INFO] [stdout]    |                             ^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: use the `.` operator to call the method `clamp` on `f32`
[INFO] [stdout]    |
[INFO] [stdout] 34 -           let ig = (256.0 * clamp(g, 0.0, 0.999)) as i32;
[INFO] [stdout] 34 +           let ig = (256.0 * g.clamp(0.0, 0.999)) as i32;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `clamp` in this scope
[INFO] [stdout]   --> src/color.rs:35:29
[INFO] [stdout]    |
[INFO] [stdout] 35 |           let ib = (256.0 * clamp(b, 0.0, 0.999)) as i32;
[INFO] [stdout]    |                             ^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: use the `.` operator to call the method `clamp` on `f32`
[INFO] [stdout]    |
[INFO] [stdout] 35 -           let ib = (256.0 * clamp(b, 0.0, 0.999)) as i32;
[INFO] [stdout] 35 +           let ib = (256.0 * b.clamp(0.0, 0.999)) as i32;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `clamp` in this scope
[INFO] [stdout]   --> src/color.rs:35:29
[INFO] [stdout]    |
[INFO] [stdout] 35 |           let ib = (256.0 * clamp(b, 0.0, 0.999)) as i32;
[INFO] [stdout]    |                             ^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: use the `.` operator to call the method `clamp` on `f32`
[INFO] [stdout]    |
[INFO] [stdout] 35 -           let ib = (256.0 * clamp(b, 0.0, 0.999)) as i32;
[INFO] [stdout] 35 +           let ib = (256.0 * b.clamp(0.0, 0.999)) as i32;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 4 arguments but 3 arguments were supplied
[INFO] [stdout]   --> src/hittable_list.rs:20:46
[INFO] [stdout]    |
[INFO] [stdout] 20 |             if let Some(hit_record) = object.hit(r, t_min, closest_so_far) {
[INFO] [stdout]    |                                              ^^^-------------------------- an argument of type `&mut hittable::HitRecord` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/hittable.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32, rec: &mut HitRecord) -> bool;
[INFO] [stdout]    |        ^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 20 |             if let Some(hit_record) = object.hit(r, t_min, closest_so_far, /* &mut hittable::HitRecord */) {
[INFO] [stdout]    |                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/hittable_list.rs:20:20
[INFO] [stdout]    |
[INFO] [stdout] 20 |             if let Some(hit_record) = object.hit(r, t_min, closest_so_far) {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^   ------------------------------------ this expression has type `bool`
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    expected `bool`, found `Option<_>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type `bool`
[INFO] [stdout]               found enum `Option<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 4 arguments but 3 arguments were supplied
[INFO] [stdout]   --> src/hittable_list.rs:20:46
[INFO] [stdout]    |
[INFO] [stdout] 20 |             if let Some(hit_record) = object.hit(r, t_min, closest_so_far) {
[INFO] [stdout]    |                                              ^^^-------------------------- an argument of type `&mut hittable::HitRecord` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/hittable.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32, rec: &mut HitRecord) -> bool;
[INFO] [stdout]    |        ^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 20 |             if let Some(hit_record) = object.hit(r, t_min, closest_so_far, /* &mut hittable::HitRecord */) {
[INFO] [stdout]    |                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/hittable_list.rs:20:20
[INFO] [stdout]    |
[INFO] [stdout] 20 |             if let Some(hit_record) = object.hit(r, t_min, closest_so_far) {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^   ------------------------------------ this expression has type `bool`
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    expected `bool`, found `Option<_>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type `bool`
[INFO] [stdout]               found enum `Option<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `rand`
[INFO] [stdout]   --> src/vec3.rs:57:21
[INFO] [stdout]    |
[INFO] [stdout] 57 |                     rand::random::<f32>(),
[INFO] [stdout]    |                     ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `rand`
[INFO] [stdout]   --> src/vec3.rs:58:21
[INFO] [stdout]    |
[INFO] [stdout] 58 |                     rand::random::<f32>(),
[INFO] [stdout]    |                     ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `rand`
[INFO] [stdout]   --> src/vec3.rs:59:21
[INFO] [stdout]    |
[INFO] [stdout] 59 |                     rand::random::<f32>(),
[INFO] [stdout]    |                     ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `rand`
[INFO] [stdout]   --> src/vec3.rs:57:21
[INFO] [stdout]    |
[INFO] [stdout] 57 |                     rand::random::<f32>(),
[INFO] [stdout]    |                     ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `rand`
[INFO] [stdout]   --> src/vec3.rs:58:21
[INFO] [stdout]    |
[INFO] [stdout] 58 |                     rand::random::<f32>(),
[INFO] [stdout]    |                     ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `rand`
[INFO] [stdout]   --> src/vec3.rs:59:21
[INFO] [stdout]    |
[INFO] [stdout] 59 |                     rand::random::<f32>(),
[INFO] [stdout]    |                     ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `rand`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     rand::thread_rng().gen() / (std::u32::MAX as f32)
[INFO] [stdout]    |     ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 1 argument but 0 arguments were supplied
[INFO] [stdout]   --> src/main.rs:58:21
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let mut world = HittableList::new();
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^-- an argument of type `Vec<Box<(dyn hittable::Hittable + 'static)>>` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/hittable_list.rs:9:12
[INFO] [stdout]    |
[INFO] [stdout] 9  |     pub fn new(list: Vec<Box<dyn Hittable>>) -> Self {
[INFO] [stdout]    |            ^^^ ----------------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let mut world = HittableList::new(/* Vec<Box<(dyn hittable::Hittable + 'static)>> */);
[INFO] [stdout]    |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `rand`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     rand::thread_rng().gen() / (std::u32::MAX as f32)
[INFO] [stdout]    |     ^^^^ use of undeclared crate or module `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 1 argument but 0 arguments were supplied
[INFO] [stdout]   --> src/main.rs:58:21
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let mut world = HittableList::new();
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^-- an argument of type `Vec<Box<(dyn hittable::Hittable + 'static)>>` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/hittable_list.rs:9:12
[INFO] [stdout]    |
[INFO] [stdout] 9  |     pub fn new(list: Vec<Box<dyn Hittable>>) -> Self {
[INFO] [stdout]    |            ^^^ ----------------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let mut world = HittableList::new(/* Vec<Box<(dyn hittable::Hittable + 'static)>> */);
[INFO] [stdout]    |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `add` found for struct `hittable_list::HittableList` in the current scope
[INFO] [stdout]   --> src/main.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 |     world.add(Box::new(Sphere::new(Vec3::new(0.0, 0.0, -1.0), 0.5)));
[INFO] [stdout]    |           ^^^ method not found in `HittableList`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/hittable_list.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout] 4  | pub struct HittableList {
[INFO] [stdout]    | ----------------------- method `add` not found for this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `add`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `Add`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `add` found for struct `hittable_list::HittableList` in the current scope
[INFO] [stdout]   --> src/main.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 |     world.add(Box::new(Sphere::new(Vec3::new(0.0, 0.0, -1.0), 0.5)));
[INFO] [stdout]    |           ^^^ method not found in `HittableList`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/hittable_list.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout] 4  | pub struct HittableList {
[INFO] [stdout]    | ----------------------- method `add` not found for this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `add`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `Add`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `add` found for struct `hittable_list::HittableList` in the current scope
[INFO] [stdout]   --> src/main.rs:60:11
[INFO] [stdout]    |
[INFO] [stdout] 60 |     world.add(Box::new(Sphere::new(Vec3::new(0.0, -100.5, -1.0), 100.0)));
[INFO] [stdout]    |           ^^^ method not found in `HittableList`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/hittable_list.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout] 4  | pub struct HittableList {
[INFO] [stdout]    | ----------------------- method `add` not found for this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `add`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `Add`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 29 previous errors; 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0050, E0061, E0308, E0412, E0422, E0425, E0432, E0433, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0050`.
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `add` found for struct `hittable_list::HittableList` in the current scope
[INFO] [stdout]   --> src/main.rs:60:11
[INFO] [stdout]    |
[INFO] [stdout] 60 |     world.add(Box::new(Sphere::new(Vec3::new(0.0, -100.5, -1.0), 100.0)));
[INFO] [stdout]    |           ^^^ method not found in `HittableList`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/hittable_list.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout] 4  | pub struct HittableList {
[INFO] [stdout]    | ----------------------- method `add` not found for this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `add`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `Add`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `raytracing` (bin "raytracing") due to 30 previous errors; 1 warning emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: aborting due to 29 previous errors; 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0050, E0061, E0308, E0412, E0422, E0425, E0432, E0433, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0050`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `raytracing` (bin "raytracing" test) due to 30 previous errors; 1 warning emitted
[INFO] running `Command { std: "docker" "inspect" "dab67a512d4a0456c19f073260c92a3cfc5f49fb891f9130dc71dddca4996213", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dab67a512d4a0456c19f073260c92a3cfc5f49fb891f9130dc71dddca4996213", kill_on_drop: false }`
[INFO] [stdout] dab67a512d4a0456c19f073260c92a3cfc5f49fb891f9130dc71dddca4996213
